Day 46 - create Spotify playlist


Posted by pei_______ on 2022-05-27

learning from 100 Days of Code: The Complete Python Pro Bootcamp for 2022


(Python package) spotipy 2.19.0

spotipy 2.19.0 Documentation


# constant

import requests
import spotipy
from bs4 import BeautifulSoup
from spotipy.oauth2 import SpotifyOAuth
from spotipy.oauth2 import SpotifyClientCredentials
import pprint

URL = "https://www.billboard.com/charts/hot-100/2000-08-12/"

SPOTIFY_CLIENT_ID = YOUR OWN CLIENT ID
SPOTIFY_CLIENT_SECRET = YOUR OWN CLIENT SECRET
SPOTIFY_URL = "http://example.com"
ACCESS_TOKEN = YOUR OWN ACCESS TOKEN
scope = "playlist-modify-private"
PLAYLIST_ID = YOUR OWN PLAYLIST ID
# scarbe 100 Songs's title from wesite

response = requests.get(url=URL)
html_content = response.text

soup = BeautifulSoup(html_content, "html.parser")
song_codes = soup.find_all(name="h3", id="title-of-a-story", class_="a-no-trucate")
# get access token

sp = spotipy.Spotify(auth_manager=SpotifyOAuth(scope=scope,
client_id=SPOTIFY_CLIENT_ID,
client_secret=SPOTIFY_CLIENT_SECRET, redirect_uri=SPOTIFY_URL))
results = sp.current_user_saved_tracks()

for idx, item in enumerate(results['items']):
    track = item['track']
    print(idx, track['artists'][0]['name'], " – ", track['name'])
# get user id

client = spotipy.client.Spotify(auth=ACCESS_TOKEN)
user_id = client.current_user()["id"]
print(user_id)
# create a new playlist

sp.user_playlist_create(user=user_id, name="Billboard 100", public=False)
# search song's url & add to tha playlist

sp = spotipy.Spotify(client_credentials_manager=SpotifyClientCredentials(client_id=SPOTIFY_CLIENT_ID,client_secret=SPOTIFY_CLIENT_SECRET))

song_urls = []

for song in song_codes:
    song_title = song.get_text()[14:].split("\t")[0]
    track_url = sp.search(song_title)["tracks"]["items"][0]['external_urls']['spotify']
    song_urls.append(track_url)

sp.playlist_add_items(playlist_id=PLAYLIST_ID, items=song_urls)

#Python #課堂筆記 #100 Days of Code







Related Posts

DAY37:Find the odd int

DAY37:Find the odd int

Python 使用 ElementTree 寫入 XML 格式檔案與縮排

Python 使用 ElementTree 寫入 XML 格式檔案與縮排

Angular17 基於 Standalone 專案載入 Material Symbols (Google Icon)

Angular17 基於 Standalone 專案載入 Material Symbols (Google Icon)


Comments